<?php
include_once('inc/functions.inc.php');

if(!isEmpty(getParam('operation'))) {
    
    switch(getParam('operation')) {
        case 'e': {
            fntCxpPagosEmpresas($db);
            break;
        }
        case 'b': {
            fntCxpPagosBusqueda($db);
            break;
        }
        case 'f': {
            fntCxpPagosFacturas($db);
            break;
        }
        case 'p': {
            fntCxpPagosPartida($db);
            break;
        } 
        case 's': {
            fntCxpPagosGrabar($db);
            break;
        }
    }
    die();
}

function fntCxpPagosEmpresas($db) {
    fntEmpresasDraw($db, "sltCxpPagosEmpresas");
    ?>
    <script type="text/javascript">
    $("select[name='sltCxpPagosEmpresas']").change( function() {
        fntCxpPagosBusqueda();
        fntCxpPagosFacturas();
    });
    </script>
    <?php
}
function fntCxpPagosBusqueda($db) {
    ?>
    <div style="width: 900px; float: left;">
        <div style="width: 900px; float: left;">&nbsp;</div>
        <div style="width: 210px; float: left;"><b>No. de factura</b></div>
        <div style="width: 290px; float: left; text-align: left;"><input type="text" name="txtCxpPagosNumeroFactura" value=""></div>
        <div style="width: 110px; float: left;"><b>No. de contraseña</b></div>
        <div style="width: 290px; float: left; text-align: left;"><input type="text" name="txtCxpPagosNumeroContrasena" value=""></div>
        <div style="width: 210px; float: left;"><input type="checkbox" name="chkCxpPagosVencidas" value="1"></div>
        <div style="width: 290px; float: left;"><b>Vencidas</b></div>
        <div style="width: 400px; float: left;">&nbsp;</div>
        <div style="width: 900px; float: left; text-align: center"><button type="button" id="btnCxpPagosBuscar">Buscar</button></div>
        <div style="width: 900px; float: left; text-align: center">&nbsp;</div>
    </div>
    <script type="text/javascript">
    $("#btnCxpPagosBuscar").button({
        icons: {
            primary: "ui-icon-search"
        }
    }).click( function () {
        fntCxpPagosFacturas();
    });
    </script>
    <?php
}
function fntCxpPagosFacturas($db) {
    
    //drawDebug($_POST);
    $intEmpresa = getParam("sltCxpPagosEmpresas");
    $intNumeroFactura = getParam("txtCxpPagosNumeroFactura");
    $intNumeroContrasena = getParam("txtCxpPagosNumeroContrasena");
    $intVencidas = getParam("chkCxpPagosVencidas");
    $strWhere = "";
    if( !empty($intNumeroFactura) ) {
        $strWhere .= " AND cllg_cp_factura.NUMERO LIKE '%{$intNumeroFactura}%' ";
    }
    if( !empty($intNumeroContrasena) ) {
        $strWhere .= " AND cllg_cp_factura.CONTRASENA LIKE '%{$intNumeroContrasena}%' ";
    }
    if( !empty($intVencidas) ) {
        $strWhere .= " AND cllg_cp_factura.FECHA_PAGO <= NOW() ";
    }
    
    $strQuery = "SELECT cllg_cp_factura.ID, 
                        IF(SERIE = '', NUMERO, CONCAT(SERIE, ' - ', NUMERO) ) AS NUMERO, 
                        cllg_cp_factura.TIPO_DOCTO,
                        cllg_cp_proveedor.RAZON_SOCIAL AS PROVEEDOR, 
                        cllg_cp_factura.FK_PROVEEDOR, 
                        cllg_cp_factura.TOTAL, 
                        DATE_FORMAT(cllg_cp_factura.FECHA, '%d-%m-%Y') AS FECHA, 
                        DATE_FORMAT(cllg_cp_factura.FECHA_PAGO, '%d-%m-%Y') AS FECHA_PAGO, 
                        cllg_cp_factura.CONTRASENA, 
                        cllg_cp_factura.SALDO_ACTUAL
                 FROM   cllg_cp_factura,
                        cllg_cp_proveedor 
                 WHERE  cllg_cp_factura.FK_PROVEEDOR = cllg_cp_proveedor.NIT
                 AND    cllg_cp_factura.FK_EMPRESA = '{$intEmpresa}' 
                 AND    cllg_cp_factura.CONTRASENA IS NOT NULL 
                 AND    cllg_cp_factura.ESTADO IN(1,2)
                 AND    cllg_cp_factura.SALDO_ACTUAL > 0
                 AND    cllg_cp_factura.TIPO_DOCTO != 'NC'
                 {$strWhere}
                 ORDER  BY cllg_cp_factura.CONTRASENA, cllg_cp_proveedor.RAZON_SOCIAL";
    //drawDebug($strQuery);
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    ?>
    <input type="hidden" name="txtCxpPagosValorProgramarAll" value="">
    <input type="hidden" name="radCxpPagosProveedorAll" value="">
    <div style="width: 900px; float: left;">
    <div style="width: 900px; float: left">&nbsp;</div>
    <div style="width: 900px; float: left;">
        <div style="width: 100px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Número de contraseña</b></div>
        <div style="width: 100px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Número de factura</b></div>
        <div style="width: 80px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Tipo de documento</b></div>
        <div style="width: 210px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Proveedor</b></div>
        <div style="width: 65px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Fecha</b></div>
        <div style="width: 100px; height: 40px; float: left; text-align: right; border-bottom: 1px solid black;"><b>Valor Factura</b></div>        
        <div style="width: 100px; height: 40px; float: left; text-align: right; border-bottom: 1px solid black;"><b>Saldo Factura</b></div>        
        <div style="width: 80px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Valor a programar</b></div>
        <div style="width: 45px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;">&nbsp;</div>
    </div>
    <?php
    if( $intNumRows > 0 ) {
        ?>
        <div style="width: 900px; height: 150px; overflow: auto; float: left;">
        <?php
        while ( $rTMP = $db->fetch_array($qTMP) ) { 
            ?>
            <div style="width: 100px; height: 30px; float: left; text-align: center;"><?php print $rTMP["CONTRASENA"]; ?></div>
            <div style="width: 100px; height: 30px; float: left; text-align: center;"><?php print $rTMP["NUMERO"]; ?></div>
            <div style="width: 80px; height: 30px; float: left; text-align: center;"><?php print $rTMP["TIPO_DOCTO"]; ?></div>
            <div style="width: 210px; height: 30px; float: left; text-align: center;"><?php print $rTMP["PROVEEDOR"]; ?></div>
            <div style="width: 65px; height: 30px; float: left; text-align: center;"><?php print $rTMP["FECHA"]; ?></div>
            <div style="width: 100px; height: 30px; float: left; text-align: right;"><?php print number_format($rTMP["TOTAL"], 2); ?>&nbsp;</div>
            <div style="width: 100px; height: 30px; float: left; text-align: right;">
                <input type="hidden" name="hdnCxpPagosValorProgramar_<?php print $rTMP["ID"]; ?>" value="<?php print $rTMP["SALDO_ACTUAL"]; ?>">
                <?php print number_format($rTMP["SALDO_ACTUAL"], 2); ?>&nbsp;
            </div>
            <div style="width: 80px; height: 30px; float: left; text-align: center;">
                <input type="text"   name="txtCxpPagosValorProgramar_<?php print $rTMP["ID"]; ?>" value="" size="9" style="text-align: right;">
            </div>
            <div style="width: 45px; height: 30px; float: left; text-align: right;">
                <input type="hidden" name="radCxpPagosProveedor_<?php print $rTMP["ID"]; ?>" value="<?php print $rTMP["FK_PROVEEDOR"]; ?>">
                <input type="checkbox" name="radCxpPagosID_<?php print $rTMP["ID"]; ?>" value="<?php print $rTMP["ID"]; ?>">
            </div>
            <?php    
        }
        ?>
        </div>
        <div style="width: 900px; height: 30px;">&nbsp;</div>
        <div style="width: 900px; height: 30px; text-align: center"><button type="button" id="btnCxpPagosGenerar">Generar</button></div>
        <script type="text/javascript">
        $(function() {
            $('input[name*="txtCxpPagosValorProgramar_"]').blur(function() {
                $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: 2, symbol: strSimbolo });
            }).keyup(function(e) {
                var e = window.event || e;
                var keyUnicode = e.charCode || e.keyCode;
                if (e !== undefined) {
                    switch (keyUnicode) {
                        case 16: break; // Shift
                        case 17: break; // Ctrl
                        case 18: break; // Alt
                        case 27: this.value = ''; break; // Esc: clear entry
                        case 35: break; // End
                        case 36: break; // Home
                        case 37: break; // cursor left
                        case 38: break; // cursor up
                        case 39: break; // cursor right
                        case 40: break; // cursor down
                        case 78: break; // N (Opera 9.63+ maps the "." from the number key section to the "N" key too!) (See: http://unixpapa.com/js/key.html search for ". Del")
                        case 110: break; // . number block (Opera 9.63+ maps the "." from the number block to the "N" key (78) !!!)
                        case 190: break; // .
                        default: $(this).formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: -1, symbol: strSimbolo, eventOnDecimalsEntered: true });
                    }
                }
            });
            $('input[name*="txtCxpPagosValorProgramar_"]').formatCurrency({ colorize: true, negativeFormat: '-%s%n', roundToDecimalPlace: 2, symbol: strSimbolo });
            $("#btnCxpPagosGenerar").button({
                icons: {
                    primary: "ui-icon-disk"
                }
            }).click( function () {
                fntCxpPagosGrabar();
            });
        });
        </script>
        <?php
        
    }
    else {
        ?>
        <div style="width: 900px; float: left;">
            <div class="ui-widget" style="width: 800px; height: auto;" align="center">
                <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 500px;"> 
                    <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                    No se encontraron registros.
               </div>
            </div>
        </div>
        <?php        
    }
    $db->free_result($qTMP);
    ?>
    </div>
    <?php    
    
}
function fntCxpPagosGrabar($db) {

    //drawDebug($_POST);
    $intEmpresa = getParam("sltCxpPagosEmpresas");
    $strSolicitudes = "";
    $intCorrelativo = 0;
    while( $arrPost = each($_POST) ) {
        
        $arrExplode = explode("_", $arrPost["key"]);
        if( $arrExplode[0] == "radCxpPagosID" ) {
            $intCorrelativo++;
            $sinValorProgramar = getParam("txtCxpPagosValorProgramar_{$arrExplode[1]}");
            $intProveedor = getParam("radCxpPagosProveedor_{$arrExplode[1]}");
            $strNombre = "";
            $strQuery = "SELECT * 
                 FROM   cllg_cp_proveedor 
                 WHERE  NIT = '{$intProveedor}' 
                 AND    FK_EMPRESA = '{$intEmpresa}'";
            $qTMP = $db->query($strQuery);
            while ( $rTMP = $db->fetch_array($qTMP) ) {
                $strNombre = $rTMP["RAZON_SOCIAL"];    
            }
            $db->free_result($qTMP);
            
            $strProveedorAll = getParam("radCxpPagosProveedorAll");
            $strValorProgramarAll = getParam("txtCxpPagosValorProgramarAll");
            if( !empty($strProveedorAll) ) {
                $strSolicitudes = "";
                if( $intCorrelativo == 1 ) {
                    $db->query("INSERT INTO cllg_bnc_docto_solicitud 
                            (FECHA, MONTO, TIPO, NOMBRE, CONCEPTO, ESTADO, MODULO) 
                            VALUES 
                            (NOW(), '{$strValorProgramarAll}', '1', '{$strNombre}', 'Pago a proveedor', '2', 'cuentas_x_pagar')");
                    $intSolicitudID = mysql_insert_id ( $db->link_id );
                }
            }
            else {
                $db->query("INSERT INTO cllg_bnc_docto_solicitud 
                            (FECHA, MONTO, TIPO, NOMBRE, CONCEPTO, ESTADO, MODULO) 
                            VALUES 
                            (NOW(), '{$sinValorProgramar}', '1', '{$strNombre}', 'Pago a proveedor', '2', 'cuentas_x_pagar')");
                $intSolicitudID = mysql_insert_id ( $db->link_id );
            }
            
            $strQuery = "INSERT INTO cllg_cp_pago
                        (FECHA, MONTO, FK_FACTURA, CONCEPTO, FK_SOLICITUD, ESTADO)
                        VALUES
                        (NOW(),'{$sinValorProgramar}','{$arrExplode[1]}','','{$intSolicitudID}','2')";
            $db->query($strQuery);
            
            $sinSaldo = 0;
            $strQuery = "SELECT SUM(MONTO) AS SALDO FROM cllg_cp_pago WHERE FK_FACTURA = '{$arrExplode[1]}' AND ESTADO IN(1,2)";
            $qTMP = $db->query($strQuery);
            while ( $rTMP = $db->fetch_array($qTMP) ) {
                $sinSaldo = $rTMP["SALDO"];    
            }
            $db->free_result($qTMP);
            
            $strQuery = "UPDATE cllg_cp_factura SET SALDO_ACTUAL = SALDO_ANTERIOR - {$sinSaldo} WHERE ID = '{$arrExplode[1]}'";
            $db->query($strQuery);
            
            $strSolicitudes .= (empty($strSolicitudes)) ? "" : ", ";            
            $strSolicitudes .= $intSolicitudID;            
            
        }
        
    }
    
    if( !empty($strSolicitudes) ) {
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 900px; height: auto; vertical-align: bottom;" align="center">
           <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                Solicitudes de cheques No. <?php print $strSolicitudes; ?>
           </div>
        </div>
        <br>
        <?php
    }
    
    die();
    $intEmpresa = getParam("sltCxpPagosEmpresas");
    $intFacturaID = getParam("radCxpPagosID");
    $valor = getParam("hdnCxpPagosValor");
    $arrfecha = explode("-", getParam("hdnCxpPagosFecha"));
    $fecha = $arrfecha[2]."-".$arrfecha[1]."-".$arrfecha[0];
    $concepto = getParam("hdnCxpPagosConcepto");
    
    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' 
                 AND    fecha_inicio <= '{$fecha}' 
                 AND    fecha_fin >= '{$fecha}'
                 AND    total_activo > 0 
                 AND    total_pasivo > 0
                 AND    fk_empresa = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCerrado = $db->num_rows;
    $db->free_result($qTMP);
    
    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' 
                 AND    fecha_inicio <= '{$fecha}' 
                 AND    fecha_fin >= '{$fecha}'
                 AND    fk_empresa = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCorrecto = $db->num_rows;
    $db->free_result($qTMP);
    
    if( $intCicloCerrado > 0 ) {
        
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 800px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 450px;"> 
                <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                No se puede ingresar partida en una fecha ya cerrada.</p>
           </div>
        </div>
        <br>
        <?php
        
    }
    else if( $intCicloCorrecto == 0 ) {
        
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 800px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 450px;"> 
                <span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                La fecha de la partida no esta configurada.
           </div>
        </div>
        <br>
        <?php
        
    }
    else {
    
        $strQuery = "SELECT * FROM cllg_contab_ciclo WHERE activo = '1' AND fk_empresa = '{$intEmpresa}'";
        $qTMP = $db->query($strQuery);
        $intNumRows = $db->num_rows;
        $rTMP = $db->fetch_array($qTMP);
        $intCiclo = $rTMP["codigo"];
        $db->free_result($qTMP);
        if( $intNumRows > 0 ) {
            
            $strQuery = "INSERT INTO cllg_contab_ajuste 
                         (id, fecha, monto, ciclo, descripcion)
                         VALUES
                         (NULL, '{$fecha}', {$valor}, '{$intCiclo}', '{$concepto}')";
            $db->query($strQuery);                     
            $intID = mysql_insert_id ( $db->link_id );
            
            if( $intID > 0 ) {
                
                while ( $arrPost = each($_POST) ) {
                    
                    $arrExplode = explode("_", $arrPost["key"]);
                    
                    if( $arrExplode[0] == "hdnCuenta" && $arrPost["value"] > 0 ) {
                        
                        $debe = getParam("txtDebe_".$arrExplode[1]);
                        $haber = getParam("txtHaber_".$arrExplode[1]);
                        if( $debe > 0 && $haber == 0 ) {
                            $monto = $debe;
                            $debe = 1;
                            $haber = 0;
                        }
                        else if( $debe == 0 && $haber > 0 ) {
                            $monto = $haber;
                            $debe = 0;
                            $haber = 1;
                        }
                        $strQuery = "INSERT INTO cllg_contab_cuenta_ajuste 
                                     (cuenta, debe, haber, monto, ajuste)
                                     VALUES
                                     ('{$arrPost["value"]}', '{$debe}', '{$haber}', '{$monto}', '{$intID}')";
                        $db->query($strQuery);
                        
                    }                    
                    
                }
                
                $db->query("UPDATE cllg_cp_factura SET ESTADO = '2', FK_AJUSTE = '{$intID}' WHERE ID = '{$intFacturaID}'");
                ?>
                <div class="ui-widget" style="border: 0px solid white; width: 900px; height: auto; vertical-align: bottom;" align="center">
                   <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                        <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                        Partida ingresada No. <?php print $intID; ?>
                   </div>
                </div>
                <br>
                <script type="text/javascript" language="javascript">
                fntCxpPagosFacturas();
                var objInterface = $("#divCxpPagosPartida");
                objInterface.html("");
                </script>
                <?php 
                
            }
        }
    }
            
}
function mround($number, $precision=0) { 
    
    $precision = ($precision == 0 ? 1 : $precision);    
    $pow = pow(10, $precision); 
    
    $ceil = ceil($number * $pow)/$pow; 
    $floor = floor($number * $pow)/$pow; 
    
    $pow = pow(10, $precision+1); 
    
    $diffCeil     = $pow*($ceil-$number); 
    $diffFloor     = $pow*($number-$floor)+($number < 0 ? -1 : 1); 
    
    if($diffCeil >= $diffFloor) return $floor; 
    else return $ceil; 
}
?>